package day06

import java.io.File


/**
 * takeif
 *   和其他标准函数不太一样，takeif函数需要判断lambda中提供的条件表达式，给出的true或false结果，如果判断结果为true，
 *   从takeif函数返回接收者对象如果是false，则返回null。如果需要判断某个条件是否满足，再决定是否可以赋值变量或执行某项任务，takeif
 *   就非常有用。  概念上讲，takeif函数类似于if语句，但他的优势是可以直接在对象实例上调用，避免临时变量赋值的麻烦
 *
 *
 *
 */
fun main() {
    val readText = File("/Users/dingchenglei/Documents/工作文档/项目阐述一.txt")
        .takeIf {
            it.exists() && it.canRead()
        }?.readText()

//    println(readText)

    //如果不用takeif

    val file = File("/Users/dingchenglei/Documents/工作文档/项目阐述一.txt")
//    val file = File("/文档/项目阐述一.txt")
    val fileResult:String? = if (file.exists() && file.canRead()){
        file.readText()
    }else{
        null
    }

//    println(fileResult)


    //TODO: takeUnless辅助函数:  只有判断你给定的条件结果为false时，takeunless才会返回原始的接收对象

    val readText1 = File("/Users/dingchenglei/Documents/工作文档/项目阐述一.txt")
        .takeUnless { it.isHidden }?.readText()
    println(readText1)


}